RESTful API 集成
目录
- 简介
- 项目结构概览
- 核心请求封装模块
- API 接口组织架构
- 认证与安全机制
- 环境配置与代理
- 错误处理与统一响应
- 缓存策略与性能优化
- 分页与参数处理
- Mock 数据与开发调试
- 实际使用示例
- 最佳实践与扩展指南
简介
lmes-web-base 项目采用基于 axios 的 RESTful API 集成方案,提供了完整的前后端通信解决方案。该系统通过精心设计的请求封装层、统一的错误处理机制、智能的缓存策略以及灵活的环境配置,为前端应用提供了稳定可靠的 API 通信能力。
项目结构概览
图表来源
核心请求封装模块
request.ts 模块架构
request.ts 是整个 API 集成的核心模块,基于 axios 进行了深度封装,提供了完整的请求生命周期管理。
图表来源
请求拦截 器功能
请求拦截器负责在请求发送前进行预处理:
- 认证令牌注入:自动从 Session 存储中获取 Token 并添加到 Authorization 头
- 默认请求头设置:合并默认的 Content-Type 和其他业务相关头部
- XML 字符串处理:识别并正确处理 XML 格式的字符串数据
- 静默模式支持:根据配置决定是否显示加载动画
响应拦截器功能
响应拦截器处理服务器返回的数据:
- 数据提取:自动提取 response.data 部分
- 错误代理检测:识别并处理代理未找到的接口
- Blob 类型处理:特殊处理文件下载场景
- 状态码映射:将 HTTP 状态码映射为用户友好的错误消息
章节来源
API 接口组织架构
项目级 API 组织
项目采用模块化的 API 组织方式,每个业务领域都有独立的 API 文件:
图表来源
API 方法类型支持
系统支持完整的 RESTful 方法:
- GET:用于数据查询和资源获取
- POST:用于数据创建和复杂查询
- PUT:用于资源更新
- DELETE:用于资源删除
章节来源
认证与安全机制
Token 注入机制
系统实现了自动化的 Token 管理机制:
// 自动从 Session 存储获取 Token
const token = Session.get('Token')
// 动态计算 Authorization 头
get Authorization() {
return token ? `Bearer ${token}` : undefined
}
请求头安全策略
- Content-Type 强制:确保所有请求都使用 application/json 格式
- 项目标识:自动注入 X-Project 头部标识当前项目
- 客户端标识:添加 X-Client-Id 支持多客户端识别
- 语言环境:动态设置 Accept-Language 头部
重新登录机制
当遇到 401 或 403 状态码时,系统会触发重新登录弹窗:
图表来源
章节来源
环境配置与代理
环境变量驱动的 baseURL 切换
系统支持通过多种方式配置 baseURL:
// 优先从 URL 参数获取
let baseURL = params.get('baseURL') || ''
// 支持通过 baseURL 参数覆盖
console.info('[baseURL]', baseURL)
开发环境代理配置
开发环境通过 Vite 配置了完整的代理系统:
图表来源
路径别名配置
系统配置了多个路径别名以简化导入:
@→./srccomponents→./src/componentssdk→./src/cms/sdk.es.js
章节来源